package com.ruoyi.business.mapper;

import com.ruoyi.business.domain.EquipmentVariables;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 存储设备变量参数信息的Mapper接口
 * 
 * @author ldkj
 * @date 2025-02-27
 */
@Mapper
public interface EquipmentVariablesMapper 
{
    /**
     * 查询存储设备变量参数信息的
     * 
     * @param variableId 存储设备变量参数信息的主键
     * @return 存储设备变量参数信息的
     */
    public EquipmentVariables selectEquipmentVariablesByVariableId(Long variableId);

    /**
     * 查询存储设备变量参数信息的列表
     * 
     * @param equipmentVariables 存储设备变量参数信息的
     * @return 存储设备变量参数信息的集合
     */
    public List<EquipmentVariables> selectEquipmentVariablesList(EquipmentVariables equipmentVariables);

    /**
     * 新增存储设备变量参数信息的
     * 
     * @param equipmentVariables 存储设备变量参数信息的
     * @return 结果
     */
    public int insertEquipmentVariables(EquipmentVariables equipmentVariables);

    /**
     * 修改存储设备变量参数信息的
     * 
     * @param equipmentVariables 存储设备变量参数信息的
     * @return 结果
     */
    public int updateEquipmentVariables(EquipmentVariables equipmentVariables);

    /**
     * 删除存储设备变量参数信息的
     * 
     * @param variableId 存储设备变量参数信息的主键
     * @return 结果
     */
    public int deleteEquipmentVariablesByVariableId(Long variableId);

    /**
     * 批量删除存储设备变量参数信息的
     * 
     * @param variableIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteEquipmentVariablesByVariableIds(Long[] variableIds);

    /**
     * 根据变量英文名称列表批量查询设备变量
     * 
     * @param variableEnNames 变量英文名称列表
     * @return 设备变量集合
     */
    public List<EquipmentVariables> selectEquipmentVariablesByEnNames(List<String> variableEnNames);

    /**
     * 批量更新设备变量的值和更新时间
     * 
     * @param equipmentVariables 设备变量列表
     * @return 影响的行数
     */
    public int batchUpdateVariableValues(List<EquipmentVariables> equipmentVariables);

    /**
     * 生产管理->>带钢温度监控->>获取电磁感应入口温度
     * @param equipmentVariables
     * @return
     */
    public List<EquipmentVariables> getStrpTempVo(EquipmentVariables equipmentVariables);

    /**
     * 根据组合唯一键查询设备变量（父类设备名称 + 变量名称 + 英文变量名称）
     *
     * @param secondaryEquipmentTypeName 父类设备名称
     * @param variableName 变量名称
     * @param variableEnName 英文变量名称
     * @return 设备变量
     */
    public EquipmentVariables selectEquipmentVariablesByUniqueKey(@Param("secondaryEquipmentTypeName") String secondaryEquipmentTypeName, 
                                                                 @Param("variableName") String variableName, 
                                                                 @Param("variableEnName") String variableEnName);

    /**
     * 根据设备类型名称列表批量查询设备变量
     * 关联s7_variables_config表，通过英文变量名进行关联，只查询激活状态的变量
     * 
     * @param equipmentTypeNames 设备类型名称列表
     * @return 设备变量列表（只包含激活状态的变量）
     */
    public List<EquipmentVariables> selectEquipmentVariablesByTypeNames(@Param("equipmentTypeNames") List<String> equipmentTypeNames);

    /**
     * 根据设备类型ID列表批量查询设备变量
     * 关联s7_variables_config表，通过英文变量名进行关联，只查询激活状态的变量
     *
     * @param equipmentTypeIds 设备类型ID列表
     * @return 设备变量列表（只包含激活状态的变量）
     */
    public List<EquipmentVariables> selectEquipmentVariablesByTypeIds(@Param("equipmentTypeIds") List<Long> equipmentTypeIds);

    /**
     * 查询参数总数
     * 
     * @return 参数总数
     */
    public Long selectTotalParametersCount();

    /**
     * 查询有值的参数数量
     * 
     * @return 有值的参数数量
     */
    public Long selectParametersWithValuesCount();

//    /**
//     * 查询存储设备变量参数信息的列表
//     *
//     * @param equipmentVariables 存储设备变量参数信息的
//     * @return 存储设备变量参数信息的集合
//     */
//    public List<EquipVariablesVO> selectVariablesList(EquipmentVariables equipmentVariables);
//
//    /**
//     * 获取设备变量参数信息
//     * @return
//     */
//    public EquipVariablesVO getEquipVariablesVo(EquipmentVariables equipmentVariables);
//
//    /**
//     * 新增点位
//     * @return
//     */
//    public boolean insertColdefinetable(EquipVariablesVO coldefinetable);
//
//    /**
//     * 修改点位
//     * @return
//     */
//    public boolean updateColdefinetable(EquipVariablesVO coldefinetable);
}
